iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Modern Web

關於學習網頁這檔事系列 第 16

DAY 16 JavaScript中變數的差別

  • 分享至 

  • xImage
  •  

JavaScript是一種廣泛使用的程式語言,用於網頁開發、服務器端編程和應用程序開發。 變數是JavaScript中的基本概念之一,用於存儲和操作數據。 在JavaScript中,有多種方式來聲明變數,每種方式都具有不同的特性和用法。這裡會詳細介紹JavaScript中變數的差異,包括let、const等。

var

使用var聲明的變數具有函數作用域,這意味著它們僅在它們所在的函數內部可見,而在函數外部不可見。 這可能導致變數泄露的問題,因為它們在函數外部也可以訪問。

function example() {
    var x = 10;
    if (true) {
        var x = 20; // 這個 x 覆蓋了外部的 x
    }
    console.log(x); // 20
}

使用var聲明的變數可以重複聲明,這可能會導致變數被覆蓋的問題。

var x = 10;
var x = 20; // 合法的重複聲明
console.log(x); // 20

let

具有區塊級作用域,這意味著它們僅在它們所在的塊(例如,if語句、循環、函數等)內部可見,而在塊外部不可見。 這有助於減少變數泄露的風險。

function example() {
    let x = 10;
    if (true) {
        let x = 20; // 這個 x 不會影響外部的 x
    }
    console.log(x); // 10
}

使用let不允許重複聲明

let x = 10;
let x = 20; // 重複聲明會拋出錯誤
console.log(x);

const

const也具有塊級作用域,類似let

function example() {
    const x = 10;
    if (true) {
        const x = 20; // 這個 x 不會影響外部的 x
    }
    console.log(x); // 10
}

const用於聲明常量,一旦賦值就不能被重新賦值。 這確保了變量的不可變性。

const PI = 3.14159;
PI = 3; // 這裡會拋出錯誤,因為不能重新賦值常量PI

對於複合數據類型(例如對象或數組),僅限制變數的重新賦值,而不限制對其內部內容的修改。 這意味著你可以更改對象或數組的內容,但不能將它們重新賦值為不同的對象或數組。

const person = { name: 'John' };
person.name = 'Doe'; // 合法的修改
person = { name: 'Jane' }; // 不合法,因為重新賦值了整個對象

總結

1.如果變數需要在整個函數內可見,並且不需要重複聲明,使用 var
2.如果變數只需要在當前區塊(例如 if 语句、循環或函數)可見,使用 letconst
3.如果變數需要提前引用,但不需要重複聲明,使用 varlet(在 ES6 以後的環境中)。
4.如果您希望避免變數提升和重複聲明,使用letconst


上一篇
DAY 15 JavaScript DOM應用(NOTE)
下一篇
DAY 17 @media介紹
系列文
關於學習網頁這檔事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言